// https://leetcode-cn.com/problems/word-break/
// 139. 单词拆分
// 给你一个字符串 s 和一个字符串列表 wordDict 作为词典。请你判断是否可以利
// 用字典中出现的单词拼接出 s。
// 注意：不要求字典中出现的单词全部都使用，并且字典中的单词可以重复使用。
function wordBreak(s: string, wordDict: string[]): boolean {
    const n = s.length;
    const wordSet = new Set(wordDict);
    const dp = new Array(n + 1).fill(false);
    dp[0] = true;

    for (let i = 1; i <= n; i++) {
        for (let j = 0; j < i; j++) {
            if (dp[j] && wordSet.has(s.slice(j, i))) {
                dp[i] = true;
                break;
            }
        }
    }
    // console.log('dp:', dp);
    return dp[n];
}

// wordBreak('leetcode', ['leet', 'code']);
// => dp: [true, false, false, false, true, false, false, false, true]
